package com.tsing.common.service;

import com.tsing.common.vo.RedisPageVo;

import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

public interface BaseRedisService<T> {

    void set(String key, Object object, Long time);

    void setString(String key, Object object);

    void setSet(String key, Object object);

    String getString(String key);

    void deleteKey(String key);

    /**
     * 添加对象到redis里面的list中
     * rightPush先进先出 leftPush先进后出
     */
    void addList(String key, List obj, Long time);

    /**
     * 添加对象到redis里面的list中
     * rightPush先进先出 leftPush先进后出
     */
    void addList(String key, List obj);

    @SuppressWarnings("rawtypes")
    RedisPageVo getListPage(RedisPageVo pageVo);

    /**
     * 删除Obj缓存
     */
    void delObj(Object o);

    /**
     * 删除键中以key开头的obj
     */
    void delByKeyLike(String key);

    Long getListSize(String key);

    void addMap(String key, Map<String, T> obj, Long time);

    Object getValueByMapKey(String key, String mapKey);

    boolean isExistMapKey(String key, String mapKey);

    List getListAll(String key);

    boolean isExistKey(String key);

    void valueAdd(String key, Integer num);

    void resetExpire(String key, Integer time, TimeUnit timeUnit);

}
